from django.shortcuts import render, HttpResponse, redirect

# Create your views here.
# 这里定义的是视图函数
from app01 import models
from app01.models import Department, UserInfo


def index(request):
    return HttpResponse("欢迎使用！！！")


def user_list(request):
    # 1、在app目录下寻找templates文件夹，寻找对应的html文件（根据app的注册顺序，逐一从app中找）
    # 2、如果找不到，会根据app的注册顺序，在每个app的templates文件夹中寻找
    # 如果最外层也有templates文件夹，并且有相同的html文件，默认还是会使用app下的html文件
    # 2
    return render(request, "user_list.html")


def user_add(request):
    return render(request, "user_add.html")


def tpl(request):
    # 字符串
    name = "Django"
    # 列表，元组和列表类似
    role = ["管理员", "超级管理员", "游客"]
    # 字典
    user_info = {"name": "python", "age": 10, "gender": "male"}
    # 列表中套字典
    data_list = [
        {"name": "Java", "age": 1},
        {"name": "C++", "age": 2},
        {"name": "Golang", "age": 3},
        {"name": "Python", "age": 4},
    ]
    return render(request, "tpl.html", {"n1": name, "n2": role, "n3": user_info, "n4": data_list})


def news(request):
    """Django模板语法案例"""
    # 列表里边套字典
    """
    [
    {
    "news_id":1909,"news_title":"深圳市委书记王伟中、市长覃伟中会见中国联通党组书记、董事长刘烈宏",
    "post_time":"2021-11-26","news_summary":"","news_thumbnail":null,
    "news_link":"/news/202111/1637934662915006083.html","link":null,"is_link":null,"creater":null,"hits":0
    },
    {
    "news_id":1908,"news_title":"联通腾讯再携手  《2021中国智慧文旅5G应用白皮书》  在京发布",
    "post_time":"2021-11-26","news_summary":"","news_thumbnail":null,
    "news_link":"/news/202111/1637906294670016268.html","link":null,"is_link":null,"creater":null,"hits":0
    },
    {
    "news_id":1907,"news_title":"中国联通董事长刘烈宏：筑算网之基   聚数智之核 开启数字化发展新征程",
    "post_time":"2021-11-26","news_summary":"","news_thumbnail":null,
    "news_link":"/news/202111/1637903847518051837.html","link":null,"is_link":null,"creater":null,"hits":0
    },
    {
    "news_id":1906,"news_title":"【服务再升级系列解读】之二 读懂网络服务的数字“密码”",
    "post_time":"2021-11-25","news_summary":"","news_thumbnail":null,
    "news_link":"/news/202111/1637822383977026711.html","link":null,"is_link":null,"creater":null,"hits":0
    },
    {
    "news_id":1905,"news_title":"【5G扬帆 联通未来】中国联通5G赋能千行百业成果巡礼——中国联通5G：让铁水化身“钢铁侠”将零件组成“汽车人”",
    "post_time":"2021-11-25","news_summary":"","news_thumbnail":null,
    "news_link":"/news/202111/1637801761948012358.html","link":null,"is_link":null,"creater":null,"hits":0
    }
    ]
    """
    # 定义一些新闻，并构建成字典或列表格式的数据，数据库，网络请求去获取（爬虫）
    # http: // www.chinaunicom.com.cn / api / pv / updatePv
    # http: // www.chinaunicom.com.cn / api / article / NewsByIndex / 2 / 2021 / 11 / news
    # 向地址：http://www.chinaunicom.com.cn/api/article/NewsByIndex/2/2021/11/news 发送请求，获取返回的结果，
    # requests，第三方的模块，注意与django中request的区别，使用前需要安装pip3 install requests
    url = "http://www.chinaunicom.com.cn/api/article/NewsByIndex/2/2021/11/news"
    url1 = "http://www.chinaunicom.com.cn/api/article/PreNextNew/2,357"
    import requests

    res = requests.get("http://www.chinaunicom.com.cn/")

    data_list = res.json()

    print(data_list)

    return render(request, "news.html")


def something(request):
    # request是一个对象，封装了用户发送过来的所有数据
    # 1、获取用户提交请求的方式
    print(request.method)
    # 2、获取通过URL传递的值
    print(request.GET)
    # 3在请求体中传递数据
    print(request.POST)
    # 4、【响应】返回内容给请求者，将内容字符串返回给用户
    # return HttpResponse("返回的内容！！！")
    # 5、【响应】读取HTML的内容，+ 渲染（替换 ）-》字符串，返回给用户浏览器
    return render(request, "something.html")
    # 返回一个redirect，【响应】让浏览器重定向到其他的页面，先返回一个东西，浏览器再次向其他地址发起请求
    return redirect("https://www.baidu.com")


def userlogin(request):
    """根据请求方式的不同，直接返回不同的页面"""
    """if request.method == "GET":
        return render(request, "login.html")
    else:
        # 如果是post请求，获取用户提交的数据
        # print(request.POST)
        # 获取用户传递过来的用户名和密码
        username = request.POST.get("username")
        password = request.POST.get("password")

        # print(username, password)
        if username == 'root' and password == '123':
            # 登录成功后，重定向，跳转到某个网址
            return redirect("https://www.baidu.com")
            # return HttpResponse("登录成功")
        else:
            # return HttpResponse("登录失败！！！")
            # 登录失败，返回登录页输出提示信息
            context = {"error_msg": "登录失败，用户名或密码错误"}
            return render(request, "login.html", context)"""

    """完善代码"""
    if request.method == "GET":
        return render(request, "login.html")

    """
    shift + tab 代码整体向左移动 
    """
    # 如果是post请求，获取用户提交的数据
    # print(request.POST)
    # 获取用户传递过来的用户名和密码
    username = request.POST.get("username")
    password = request.POST.get("password")

    # print(username, password)
    if username == 'root' and password == '123':
        # 登录成功后，重定向，跳转到某个网址
        return redirect("https://www.baidu.com")
        # return HttpResponse("登录成功")

    # return HttpResponse("登录失败！！！")
    # 登录失败，返回登录页输出提示信息
    context = {"error_msg": "登录失败，用户名或密码错误"}
    return render(request, "login.html", context)


def orm(request):
    """
    测试orm操作数据库表
    :param request:
    :return:
    """
    # 新建
    # models.Department.objects.create(title="销售部")
    # models.Department.objects.create(title="运营部")
    # models.Department.objects.create(title="财务部")
    # models.UserInfo.objects.create(name='java', password='123123',  age=18)
    # models.UserInfo.objects.create(name='python', password='123123',  age=18)
    # models.UserInfo.objects.create(name='Golang', password='123123',  age=18)

    # 删除，filter(id=1)标识过滤的条件
    Department.objects.filter(id=1).delete()
    # 全部删除
    Department.objects.all().delete()

    # 获取数据
    # 获取这张表中的所有数据
    # print(UserInfo.objects.all())

    data_list = UserInfo.objects.all()

    print("显示所有的结果")
    for obj in data_list:
        print(obj.name, obj.password, obj.age)

    data = UserInfo.objects.filter(id=1)

    print("根据id查询")
    for obj in data:
        print(obj.name, obj.password, obj.age)

    # 获取所有数据，只显示第一条
    row_data = UserInfo.objects.all().first()

    print("只显示一行")
    print(row_data.name, row_data.password, row_data.age)

    # 更新数据
    # 更新所有的数据
    UserInfo.objects.all().update(password="123456")
    # 根据条件进行更新
    UserInfo.objects.filter(id=1).update(password="121212")

    return HttpResponse("成功")


def info_list(request):
    # 获取用户数据库中的所有数据
    data_list = UserInfo.objects.all()
    context = {"data_list": data_list}

    return render(request, "info_list.html", context)


def info_add(request):
    # 如果时GET请求，显示新增页面
    if request.method == 'GET':
        return render(request, "info_add.html")

    username = request.POST.get("username")
    password = request.POST.get("password")
    age = request.POST.get("age")

    print(username, password, age)
    # 获取到的数据写入到数据库中
    models.UserInfo.objects.create(name=username, password=password, age=age)
    # 执行添加成功后，重定向到用户列表界面，跳转到其他人的页面需要写全了
    # return redirect("http://127.0.0.1:8000/info/list/")
    # 跳转到自己的页面，会自动的拼接当前的域名
    return redirect("/info/list/")


def info_update(request):
    return HttpResponse("成功")


def info_del(request):
    """
    根据前端用户传递的用户id，进行删除操作
    :param request:
    :return:
    """

    u_id = request.GET.get("u_id")

    UserInfo.objects.filter(id=u_id).delete()

    # 删除成功后，返回列表界面
    return redirect("/info/list/")


def info_update(request):
    """
    更新用户
    :param request:
    :return:
    """
    # 先根据前端传过来的用户id查询用户数据
    # 再接收用户更新的数据



